﻿using System.Collections.Generic;

namespace Views
{
    /// <summary>
    /// Interface representing the main super query window
    /// </summary>
    public interface IMainWindowView : IView
    {
        /// <summary>
        /// List of queries currently loaded
        /// </summary>
        List<IQueryView> Queries
        {
            get;
            set;
        }

        /// <summary>
        /// The currently selected query
        /// </summary>
        IQueryView SelectedQueryTab
        {
            get;
            set;
        }

        /// <summary>
        /// Provide access through the view to the currently loaded user configuration
        /// </summary>
        Models.UserConfiguration UserConfig
        {
            get;
            set;
        }

        /// <summary>
        /// Create a new query tab and return an instance of it's view
        /// </summary>
        /// <returns>A view that impliments IQuery</returns>
        IQueryView NewQueryTab();

        /// <summary>
        /// Close an existing query tab if possible
        /// </summary>
        /// <param name="queryTab">The query to close represented by it's view</param>
        void CloseQueryTab(IQueryView queryTab);
    }
}
